package com.mastercard.assets.web.struts.actions;

import com.mastercard.assets.jpa.TblAsset;
import com.mastercard.assets.jpa.TblTipoCuenta;
import com.mastercard.assets.jpa.TblTipoCuentaPaquete;
import com.mastercard.assets.jpa.TblUsuario;
import com.mastercard.assets.util.dao.MasterCardDAO;
import com.mastercard.assets.web.util.to.UserLogin;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;

public class AssetsBDMTitularIndex
        extends
		Action
{
        public ActionForward execute(
							ActionMapping mapping , 
							ActionForm form ,
							HttpServletRequest request , 
							HttpServletResponse response )
		throws 
			IOException , 
			ServletException
        {
            HttpSession session = request.getSession( ) ;
		
		// en caos de null
		if( session == null )
			return mapping.findForward( "noLogin" ) ;
		
		// toma el userLogin
		UserLogin user = ( UserLogin ) session.getAttribute( "UserLogin" ) ;
                
                // en caso de null
		if( user == null )
			return mapping.findForward( "noLogin" ) ;
                
                int cveUsuario = user.getCveUsuario( ) ;
                TblUsuario userData = MasterCardDAO.findUserById( cveUsuario ) ;
                int cvePais = userData.getTblPais( ).getCvePais( ) ;
                TblTipoCuenta tc = user.getCountType( ) ;
                
                if( user.getActualRoleId( ) != 5 )
		{
			// en caso de que se cumpla, guarda el WorkArea
			user.setNextWorkArea( "/WEB-INF/pages/WorkArea/RoleNoValido.jsp" ) ;
			
                        MasterCardDAO.closeEntityManager( ) ;
			return mapping.findForward( "success" ) ;
		}
                
                try
		{
                        List< TblAsset > allAssets = new ArrayList< TblAsset >( ) ,
                                oldAssets = new ArrayList< TblAsset >( ) ,
                                postAssets  = new ArrayList< TblAsset >( ) ;
                        
                        List< TblTipoCuentaPaquete > tcp =
                                MasterCardDAO.getAllPackageInCountTypeAndStatusBDM1( 1, 1, tc.getCveTipoCuenta( ) ) ;
                        
                                                
                        for( TblTipoCuentaPaquete Tcp : tcp )
                        {
                            TblAsset asset = Tcp.getTblPaquete( ).getTblAsset( ) ;
                            boolean yaEsta = false ;
                            
                            if( allAssets.isEmpty( ) )
                            {
                                yaEsta = false ;
                            } else {
                                
                                for( TblAsset as : allAssets )
                                {
                                    if( as.getCveAsset( ) == asset.getCveAsset( ) )
                                    {
                                        yaEsta = true ;
                                        break ;
                                    }
                                        
                                }
                            }
                            
                            if( yaEsta == false )
                                allAssets.add( asset ) ;
                        }
                    
			
                        SimpleDateFormat formato = new SimpleDateFormat("yyyyMMdd") ;
                        // toma la fecha actual
                        Date fec = new Date( ) ;                        
                        String cadenaFecha = formato.format( fec ) ;
                        int fecActual = Integer.parseInt( cadenaFecha ) , AssetFec ;
                        String fe ;
                        
                        for ( TblAsset n : allAssets ) {
                            Date fecAsset = n.getFecha( ) ;
                            fe = formato.format( fecAsset ) ;
                            AssetFec = Integer.parseInt( fe ) ;
                            
                            if ( fecActual > AssetFec ) {
                                oldAssets.add( n ) ;
                            }else {
                                postAssets.add( n ) ;
                            }                            
                        }
                        
                        System.out.println( "anterior::: " + oldAssets.size() + " Actual::: " + postAssets.size() ) ;
			request.setAttribute( "Assets" , allAssets ) ;
                        request.setAttribute( "antAssets" , oldAssets ) ;
                        request.setAttribute( "postAssets" , postAssets ) ;
                        
		
			user.clearMessageError( ) ;
		}catch( Exception e )
		{
                    MasterCardDAO.closeEntityManager( ) ;
			e.printStackTrace( ) ;
			request.setAttribute( "Assets" , new ArrayList< TblAsset >( ) ) ;
		}
                
                // en caso de que se cumpla, guarda el WorkArea
		user.setNextWorkArea( "/WEB-INF/pages/WorkArea/AssetsIndexBDM.jsp" ) ;
                
                user.setMenuAct(11);
                
                MasterCardDAO.closeEntityManager( ) ;
	  	return mapping.findForward( "success" ) ;
                
        }
}
